const apiUrl = 'https://bill.c1130.cn/api/';
// const apiUrl = 'http://www.bill.net/api/';


class Base {
	constructor () {
		this.baseRestUrl = apiUrl;
	}

	//http 请求类, 当noRefech为true时，不做未授权重试机制
	request(params, noRefech) {
		var that = this;

		//请求方式，默认POST
		if(!params.type){
			params.type = 'post';
		}

		

		//默认需要登录才能请求接口
		if(params.login != false){
			params.login = true;
		}

	    if(!params.data){
	    	params.data = {};
	    }
		
	
		// #ifdef MP-WEIXIN
		params.data.mobileType = 'smallapp';
		// #endif
		
		// #ifdef APP-PLUS
		params.data.mobileType = 'app';
		// #endif
	    

		//获取本地存储的用户token
		var userToken = uni.getStorageSync('token');
		console.log('userToken:'+userToken);
		
		//防止同步的情况出现，请求要放在判断结束后才进行
		if(params.login && !userToken) {

			//本地没有token，要求用户微信授权
			console.log('needLogin');
			uni.navigateTo({
				url:'/pages/my/login'
			})
		} else {
			console.log('no needLogin');
			params.data.token = userToken;
			that.apiRequest(params);
		}



	}

	//请求服务器数据
	apiRequest(params) {
		var that = this;
		//实际请求的地址
		var apiUrl = that.baseRestUrl + params.url;

		//不需要重新组装URl
		if(params.setUpUrl == false) {
			apiUrl = params.url;
		}

		uni.request({
			url: apiUrl,
			method: params.type,
			data: params.data,
			header: {
        'content-type': 'application/x-www-form-urlencoded ' //自定义请求头信息
			},
			success: res => {
// 				console.log(res);
// 				console.log(JSON.stringify(res));
				if(res.data.code == 200 || res.data.code == 201) {
					params.sCallback && params.sCallback(res.data);
				} else if(res.data.code == 401){
					uni.navigateTo({
						url: '/pages/my/login'
					})
				} else {
					// if(noRefech) {
					// 	that._refect(params);
					// }
					that._processError(res);
					params.eCallback && eCallback(res.data.data);
				}
			},
			fail: (err) => {
				that._processError(err);
			},
			complete: () => {}
		});
		

	}

	//记录错误日志
	_processError(err) {
		console.log(err);
		this.alert(err.data.msg);
	}

	//重新请求
	_refect(params) {
		var toKen = new Token();
		toKen.getUserInfo((res) => {
			this.request(params, true);
		});
	}
	
	//获得元素上的绑定的值
	getDataSet(event, key) {
		return event.currentTarget.dataset[key];
	}

	//提示
	alert(msg) {
		console.log(msg);
		uni.showModal({
			title: '提示',
			content: msg,
			showCancel: false,
			
		});
		return false;
	}


	//上传图片
	uploadImg (path, sCallback) {
		var that = this, 
			url = that.baseRestUrl +'ajax/upload';

		wx.uploadFile({
          url: url, 
          filePath: path,
          name: 'file',
          formData:{
            'user': 'test'
          },
          success: function(res){
          	var res = JSON.parse(res.data);
            if(res.code == 200) {
              	sCallback && sCallback(res.data.url);
            } else {
              	that._processError(res);
              	this.alert('上传出错'+res.msg);
            }
          }
        })

	}
}

const base = new Base();

export default {
    base
}